package com.traffic.fuwu.util;






import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;

/* *
 *类名：UtilDate
 *功能：自定义订单类
 *详细：工具类，可以用作获取系统日期、订单编号等
 *版本：3.4
 *日期：2016-10-26
 *说明：329736233@qq.com 
 *作者：  pikewei
 *以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究使用，只是提供一个参考。
 */
public class UtilDate {
	
    /** 年月日时分秒(无下划线) yyyyMMddHHmmss */
    public static final String dtLong                  = "yyyyMMddHHmmss";
    
    /** 完整时间 yyyy-MM-dd HH:mm:ss */
    public static final String simple                  = "yyyy-MM-dd HH:mm:ss";
    
    /** 年月日(无下划线) yyyyMMdd */
    public static final String dtShort                 = "yyyyMMdd";
    
    /** 年月日(下划线) yyyyMMdd */
    public static final String dtString                = "yyyy-MM-dd";
	
    
    /**
     * 返回系统当前时间(精确到毫秒),作为一个唯一的订单编号
     * @return
     *      以yyyyMMddHHmmss为格式的当前系统时间
     */
	public  static String getOrderNum(Date date){
		DateFormat df=new SimpleDateFormat(dtLong);
		return df.format(date);
	}
	
	public  static Date getDateZero(Date date) throws ParseException{
		DateFormat df=new SimpleDateFormat(dtString);
		String format = df.format(date);
		return StringToDate(format);
	}
	
	/**
	 * 字符串转时间
	 * @param dateStr
	 * @return
	 * @throws ParseException 
	 */
	public  static Date StringToDate(String dateStr) throws ParseException{
		DateFormat df=new SimpleDateFormat(dtString);
		
		return df.parse(dateStr);
	}
	
	public  static Date stringToDateLong(String dateStr) throws ParseException{
		DateFormat df=new SimpleDateFormat(simple);
		
		return df.parse(dateStr);
	}
	
	/**
	 * 格式化获取系统当前日期(精确到毫秒)，格式：yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public  static String getDateFormatter(Date date){
		DateFormat df=new SimpleDateFormat(simple);
		return df.format(date);
	}
	
	
	/**
	 * 格式化获取系统当前日期(精确到天)，格式：yyyy-MM-dd 
	 * @return
	 */
	public  static String getDateFormatToDay(Date date){
		DateFormat df=new SimpleDateFormat(dtString);
		return df.format(date);
	}
	
	/**
	 * 格式化想要的年月日(精确到毫秒)，格式：yyyyMMdd
	 * @return
	 */
	public  static String getDateFormatToDay2(Date date){
		DateFormat df=new SimpleDateFormat(dtShort);
		return df.format(date);
	}
	
	/**
	 * 获取dateNum个月后的时间，格式：Date
	 * @return
	 */
	public  static Date getDateNumberMonthAfter(Date date,int dateNum){
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);//把当前时间赋给日历
		calendar.add(Calendar.MONTH, dateNum); //设置查询最开始的时间啊（dateNum个月前，当前时间往后推dateNum个月）
		return calendar.getTime();
	}
	/**
	 * 获取后n天的时间，格式：Date
	 * @return
	 */
	public  static Date getDateNumberDayAfter(Date date,int n){
		Calendar calendar = Calendar.getInstance(); //得到日历
		calendar.setTime(date);//把当前时间赋给日历
		calendar.add(Calendar.DAY_OF_MONTH, n); //
		return calendar.getTime();
	}
	
	/**
	 * 获取系统当期年月日(精确到天)，格式：yyyyMMdd
	 * @return
	 */
	public static String getDate(Date date){
		DateFormat df=new SimpleDateFormat(dtShort);
		return df.format(date);
	}
	
	/**
	 * 产生随机的三位数
	 * @return
	 */
	public static String getThree(){
		Random rad=new Random();
		return rad.nextInt(1000)+"";
	}
	
}
